package com.xbfinal.myzhxy.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xbfinal.myzhxy.pojo.Grade;
import com.xbfinal.myzhxy.service.GradeService;
import com.xbfinal.myzhxy.util.Result;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.websocket.server.PathParam;
import java.util.List;

@RestController
@RequestMapping("/sms/gradeController")
public class GradeController {


    @Autowired
    private GradeService gradeservice;
    //查询信息
    @ApiOperation("查询信息")//这是swagger的注解用于生成接口文档
    @GetMapping("/getGrades/{pageNo}/{pageSize}")
    public Result getGrades(
            //@RequestParam：将请求参数绑定到你控制器的方法参数上（是springmvc中接收普通参数的注解）
            //@PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中
            @PathVariable Integer pageNo,//第几页
            @PathVariable Integer pageSize,//每页大小
            //required = false可以没有参数，默认值时true 若没有有参数则报404
            @ApiParam("分页查询模糊匹配班级名")
            @RequestParam (value = "gradeName",required = false)
                    String gradeName
    ){
        //分页带条件查询
        Page<Grade> page=
                new Page<>(pageNo,pageSize);
        //通过服务层进行查询
        IPage<Grade> pageRS
                = gradeservice.getBradeByOpr(page,gradeName);

        //封装Result对象返回
        return Result.ok(pageRS);

    }

    //添加年级信息
    @ApiOperation("添加信息或者修改grade")
    @PostMapping("/saveOrUpdateGrade")
    public Result saveOrUpdateGrade(
            //前端是在请求体中以json字符串的形形式返回数据 我们用grade接受
            //@RequestBody 在请求体中拿数据
            @ApiParam("这是JSON格式的grade对象")
            @RequestBody Grade grade
    ){
        //调用服务层方法 完成增加或则修改
        gradeservice.saveOrUpdate(grade);
        return Result.ok();
    }

    //删除年级信息（包括批量删除）
    //sms/gradeController/deleteGrade
    //请求方法: DELETE
    @ApiOperation("删除信息的")
    @DeleteMapping("deleteGrade")
    public Result deleteGrade(
            @ApiParam("根据id要删除的一个集合")
            @RequestBody List<Integer> ids){
        //调用service方法

        /*for(Integer id:ids){
            gradeservice.removeById(id);
        }*/
        gradeservice.removeByIds(ids);
        return Result.ok();
    }

    //查询年级
    @ApiParam("获取全部年级的方法")
    @GetMapping("/getGrades")
    public Result getGrades(){
        final List<Grade> list = gradeservice.list();
        return Result.ok(list);
    }

}
